<?php

class Helper {
	public static function stringURLSafe($string)
  {
    $trans = array(
      "đ"=>"d",
      "Đ"=>"d",
      "á"=>"a", "à"=>"a", "ả"=>"a", "ã"=>"a", "ạ"=>"a",
      "Á"=>"a", "À"=>"a", "Ả"=>"a", "Ã"=>"a", "Ạ"=>"a","A"=>"a",
      "ấ"=>"a", "ầ"=>"a", "ẩ"=>"a", "ẫ"=>"a", "ậ"=>"a","â"=>"a",
      "Ấ"=>"a", "Ầ"=>"a", "Ẩ"=>"a", "Ẫ"=>"a", "Ậ"=>"a","Â"=>"a",
      "ắ"=>"a", "ằ"=>"a", "ẳ"=>"a", "ẵ"=>"a", "ặ"=>"a","ă"=>"a",
      "Ắ"=>"a", "Ằ"=>"a", "Ẳ"=>"a", "Ẵ"=>"a", "Ặ"=>"a","Ă"=>"a",
      "é"=>"e", "è"=>"e", "ẻ"=>"e", "ẽ"=>"e", "ẹ"=>"e",
      "É"=>"e", "È"=>"e", "Ẻ"=>"e", "Ẽ"=>"e", "Ẹ"=>"e","E"=>"e",
      "ế"=>"e", "ề"=>"e", "ể"=>"e", "ễ"=>"e", "ệ"=>"e","ê"=>"e",
      "Ế"=>"e", "Ề"=>"e", "Ể"=>"e", "Ễ"=>"e", "Ệ"=>"e","Ê"=>"e",
      "ú"=>"u", "ù"=>"u", "ủ"=>"u", "ũ"=>"u", "ụ"=>"u",
      "Ú"=>"u", "Ù"=>"u", "Ủ"=>"u", "Ũ"=>"u", "Ụ"=>"u", "U"=>"u",
      "ứ"=>"u", "ừ"=>"u", "ử"=>"u", "ữ"=>"u", "ự"=>"u", "ư"=>"u",
      "Ứ"=>"u", "Ừ"=>"u", "Ử"=>"u", "Ữ"=>"u", "Ự"=>"u", "Ư"=>"u",
      "í"=>"i", "ì"=>"i", "ỉ"=>"i", "ĩ"=>"i", "ị"=>"i",
      "Í"=>"i", "Ì"=>"i", "Ỉ"=>"i", "Ĩ"=>"i", "Ị"=>"i", "I"=>"i",
      "ý"=>"y", "ỳ"=>"y", "ỷ"=>"y", "ỹ"=>"y", "ỵ"=>"y",
      "Ý"=>"y", "Ỳ"=>"y", "Ỷ"=>"y", "Ỹ"=>"y", "Ỵ"=>"y", "Y"=>"y",
      "ó"=>"o", "ò"=>"o", "ỏ"=>"o", "õ"=>"o", "ọ"=>"o",
      "Ó"=>"o", "Ò"=>"o", "Ỏ"=>"o", "Õ"=>"o", "Ọ"=>"o", "O"=>"o",
      "ố"=>"o", "ồ"=>"o", "ổ"=>"o", "ỗ"=>"o", "ộ"=>"o", "ô"=>"o",
      "Ố"=>"o", "Ồ"=>"o", "Ổ"=>"o", "Ỗ"=>"o", "Ộ"=>"o", "Ô"=>"o",
      "ớ"=>"o", "ờ"=>"o", "ở"=>"o", "ỡ"=>"o", "ợ"=>"o", "ơ"=>"o",
      "Ớ"=>"o", "Ờ"=>"o", "Ở"=>"o", "Ỡ"=>"o", "Ợ"=>"o", "Ơ"=>"o",
    );

	  $str = str_replace('-', ' ', $string);
    $str = strtr($str, $trans);
	  $str = preg_replace('/(\s|[^A-Za-z0-9\-\.])+/', '-', $str);

	  $str = trim($str, '-');

	  return $str;
	}

  public static function uploadFile($name, $_fileType = 'image/jpeg', $_fileMaxUpLoad = '4000000', $_path = 'upload', $require = true) {
    $message = array();
    if($_FILES[$name]['name'] != NULL) { // Đã chọn file
      $fileType = explode('|', $_fileType);
      if(!in_array($_FILES[$name]['type'], $fileType)) {
        $message['type'] = 'error';
        $message['message'] = 'Kiểu file không hợp lệ';
        return $message;
      }

      if(intval($_FILES[$name]['size']) > intval($_fileMaxUpLoad)) {
        $message['type'] = 'error';
        $message['message'] = 'File không được lớn hơn';
        return $message;
      }

      $tmp_name = $_FILES[$name]['tmp_name'];
      $name = self::stringURLSafe($_FILES[$name]['name']);
      move_uploaded_file($tmp_name, $_path . '/' . $name);
      $message['type'] = 'success';
      $message['message'] = $name;
    } else if ($require) {
      $message['type'] = 'error';
      $message['message'] = 'Vui lòng chọn file';
    } else {
      $message['type'] = 'success';
      $message['message'] = '';
    }

    return $message;
  }

  public static function inputRequire($data, $require) {
    $message = array(
      'type' => 'success'
    );
    foreach ($require as $value) {
      if (array_key_exists($value, $data)) {
        if (empty($data[$value])) {
          $message['type'] = 'error';
          $message['message'] = $value . 'không được để trống';
          return message;
        }
      }
    }
    return $message;
  }

  public static function getData($data, $key, $default = 1) {
    $result = $default;
    if (!empty($data) && !empty($key) && array_key_exists($key, $data) && is_array($data)) {
      if (!empty($data[$key])) {
        $result = $data[$key];
      }
    }

    return $result;
  }

  public static function showMessage() {
    $html = '';
    if (!empty($_SESSION['message'])) {
      $html = '<div class="alert alert-'. $_SESSION['message']['type'] .'">
                <button class="close" data-dismiss="alert"></button>
                '. $_SESSION['message']['message'] . '</div>';
      unset($_SESSION['message']);
    }
    return $html;
  }

  public static function setMessage($message) {
    $_SESSION['message']['type'] = $message['type'];
    $_SESSION['message']['message'] = $message['message'];
    return $message['type'] == 'error' ? false : true;
  }

  public static function checkTask($redirect = 'index.php') {
    if (empty($_GET['task']) || !in_array($_GET['task'], array('create', 'delete', 'update')) ) {
      Helper::setMessage(array('type' => 'error', 'message' => 'This task doesn\'t exist!'));
      header('Location: ' . $redirect);
      exit();
    }
    return $_GET['task'];

  }

}

